#include <stdio.h>
#include <stdlib.h>


// 读写结构体文件示例c
// 定义一个结构体
typedef struct {
    int id;
    char name[50];
    float salary;
} Employee;

int main() {
    FILE *file; // 文件指针
    Employee emp; // 创建结构体变量

    // 打开文件，"wb"表示以二进制写模式打开
    file = fopen("employee.dat", "wb");
    if (file == NULL) {
        perror("Error opening file");
        return EXIT_FAILURE;
    }

    // 填充结构体数据
    emp.id = 1;
    strcpy(emp.name, "John Doe");
    emp.salary = 50000.0;

    // 将结构体写入文件
    fwrite(&emp, sizeof(Employee), 1, file);

    // 关闭文件
    fclose(file);

    // 清空结构体数据
    emp.id = 0;
    strcpy(emp.name, "");
    emp.salary = 0.0;

    // 重新打开文件，"rb"表示以二进制读模式打开
    file = fopen("employee.dat", "rb");
    if (file == NULL) {
        perror("Error opening file");
        return EXIT_FAILURE;
    }

    // 从文件读取结构体
    fread(&emp, sizeof(Employee), 1, file);

    // 打印读取的数据
    printf("ID: %d\n", emp.id);
    printf("Name: %s\n", emp.name);
    printf("Salary: %.2f\n", emp.salary);

    // 关闭文件
    fclose(file);

    return 0;
}